package com.itjiange.springbootinit.model.dto.ai;//这个是用来处理请求的
import com.alibaba.dashscope.common.Role;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ChatRequest {
    String model;
    Input input;
    Parameters parameters;

    public ChatRequest(String q){
        model  = "qwen-turbo";
        input = new Input(q);
        parameters = new Parameters();
    }
    class Input {
        public List<Chat> messages;
        Input(String q){
            ArrayList<Chat> chats = new ArrayList<>();
            chats.add(new Chat(Role.SYSTEM.getValue(), "你是一个数据分析师和前端开发专家，接下来我会按照以下固定格式给你提供内容(生成的内容中【【【】】】符号需存在)：\n" +
                    "分析诉求:\n" +
                    "{数据分析的需求或者目标}\n" +
                    "原始数据(数据改变也不影响输出格式):\n" +
                    "{csv格式的原始数据，用,作为分隔符}\n" +
                    "请根据这两部分内容，严格按照以下指定格式生成内容(除此之外不要输出任何多余的\\```、javaScript字样、注释、符号)\n" +
                    "【【【】】】\n" +
                    "{前端 Echarts V5 的 option 配置对象的js代码转成json格式，合理地将数据进行可视化，禁止生成任何多余的注释、符号\n" +
                    "【【【】】】\n" +
                    "{明确的数据分析结论、越详细越好，不要生成多余的注释}"));
            chats.add(new Chat(Role.SYSTEM.getValue(), "折线图回复示例如下：\n"));
            chats.add(new Chat(Role.SYSTEM.getValue(), "【【【】】】(该符号必须存在)\n" +
                    "{\n" +
                    "  \"option\": {\n" +
                    "    \"xAxis\": {\n" +
                    "      \"type\": \"category\",\n" +
                    "      \"data\": [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"]\n" +
                    "    },\n" +
                    "    \"yAxis\": {\n" +
                    "      \"type\": \"value\"\n" +
                    "    },\n" +
                    "    \"series\": [\n" +
                    "      {\n" +
                    "        \"data\": [150, 230, 224, 218, 135, 147, 260],\n" +
                    "        \"type\": \"line\"\n" +
                    "      }\n" +
                    "    ]\n" +
                    "  }\n" +
                    "}\n" +
                    "【【【】】】(该符号必须存在)\n" +
                    "分析结论为(稍微详细一点，默认100字左右)。。。"));
            chats.add(new Chat(Role.SYSTEM.getValue(), "饼图回复示例如下：\n"));
            chats.add(new Chat(Role.SYSTEM.getValue(), "【【【】】】(不管是什么类型的图表，该符号必须存在)\n" +
                    "{\n" +
                    "\"option\": {\n" +
                    "    \"tooltip\": {\n" +
                    "      \"trigger\": \"item\"\n" +
                    "    },\n" +
                    "    \"legend\": {\n" +
                    "      \"orient\": \"vertical\",\n" +
                    "      \"left\": \"left\"\n" +
                    "    },\n" +
                    "    \"series\": [\n" +
                    "      {\n" +
                    "        \"name\": \"用户数\",\n" +
                    "        \"type\": \"pie\",\n" +
                    "        \"radius\": \"55%\",\n" +
                    "        \"center\": [\"50%\", \"60%\"],\n" +
                    "        \"data\": [\n" +
                    "          { \"value\": 18, \"name\": \"1号\" },\n" +
                    "          { \"value\": 20, \"name\": \"2号\" },\n" +
                    "          { \"value\": 50, \"name\": \"3号\" },\n" +
                    "          { \"value\": 90, \"name\": \"4号\" }\n" +
                    "        ],\n" +
                    "        \"emphasis\": {\n" +
                    "          \"itemStyle\": {\n" +
                    "            \"shadowBlur\": 10,\n" +
                    "            \"shadowOffsetX\": 0,\n" +
                    "            \"shadowColor\": \"rgba(0, 0, 0, 0.5)\"\n" +
                    "          }\n" +
                    "        }\n" +
                    "      }\n" +
                    "    ]\n" +
                    "  }" +
                    "}\n" +
                    "【【【】】】(不管是什么类型的图表，该符号必须存在)\n" +
                    "分析结论为(稍微详细一点，默认100字左右)。。。"));
            chats.add(new Chat(Role.USER.getValue(), q));
            messages = chats;
        }
    }
    class Chat {
        public String role;
        public String content;
        Chat(String role,String content){
            this.role = role;
            this.content = content;
        }
    }
    class Parameters {
        public String result_format = "text";
    }
}
